const fs = require('fs');
const path = require('path');

// 定义一个函数，用于打印目录
function printDirectory(dirPath, depth = 0) {
  // 获取目录下的所有文件和子目录
  const files = fs.readdirSync(dirPath);

  // 创建一个空字符串，用于存储目录结构
  let output = '';

  // 遍历所有文件和子目录
  for (const file of files) {
    // 获取文件或子目录的路径
    const filePath = path.join(dirPath, file);

    // 获取文件或子目录的状态信息
    const stats = fs.statSync(filePath);

    // 如果是目录，则递归调用 `printDirectory()` 函数
    if (stats.isDirectory()) {
      output += `${'\t'.repeat(depth)}- ${file}\n`;
      output += printDirectory(filePath, depth + 1);
    } else {
      // 如果是文件，并且文件类型是目录或者以 .md 结尾的文件，则输出文件名
      if (path.extname(file) === '.md' && file != "_sidebar.md") {
        output += `${'\t'.repeat(depth)}- [${path.basename(file, path.extname(file))}](${basePath}${filePath})\n`;
      }
    }
  }

  // 返回目录结构
  return output;
}

// 定义一个函数，用于将目录结构写入到 Markdown 文件
function writeDirectoryToMarkdown(dirPath, markdownFilePath) {
  // 获取目录结构
  const directoryOutput = printDirectory(dirPath);

  // 创建一个 Markdown 文件
  const markdownFile = fs.createWriteStream(markdownFilePath);

  // 写入目录结构
  markdownFile.write(directoryOutput);

  // 关闭 Markdown 文件
  markdownFile.end();
}

// 获取目录路径
const directoryPath = '.';

// 获取 Markdown 文件路径
const markdownFilePath = './_sidebar.md';

var basePath = "docs/";

// 将目录结构写入到 Markdown 文件
writeDirectoryToMarkdown(directoryPath, markdownFilePath);

// 打印一条消息，表示目录结构已经成功写入到 Markdown 文件
console.log('目录结构已成功写入到 Markdown 文件。');